<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>javascript 阶段</title>
</head>
<body>
    <h3>sort方法</h3>

    <script>
        // 升序 : 从小到大的排序
        // 降序 ：从大到小的排序
        // 1.0 定义数组
        var arr = [80,40,70,60,8,9,20,100];
        // 调用者: arr
        // 参数: 匿名函数 (回调函数)
        // function(){} 在sort函数作用域中被调用了
        // 在sort函数封装过程中被调用了
        // 这个匿名函数同时具有形参
        var res1 = arr.sort(function(prev,next){
            return prev - next;// 升序
        })
        console.log(res1);// [20, 40, 60, 70, 80, 100]

        var res2 = arr.sort(function(prev,next){
            return next - prev;// 降序
        })
        console.log(res2);//  [100, 80, 70, 60, 40, 20]





        // 匿名函数(没有名字的函数)
        // function(){}       // 报错
        // (function(){})     // 正确的写法,不报错
        // (function(){})()   // 表示匿名函数的调用 [立即执行函数]
        // (function(){console.log("test");})()  // 表示匿名函数的调用 [立即执行函数]
        // 把函数作为参数传递到另一个函数作用域中调用
        // 作为参数的函数,我们叫做回调函数


        // 复杂点数据结构：
            // 数组嵌套对象
        var data = [
            {price: 99,  name:"衣服" },
            {price: 68,  name:"钢笔" },
            {price: 2,   name:"矿泉水" },
            {price: 120, name:"杯子" },
            {price: 300, name:"桌" }
        ]

        // 商品按 价格从高到低排序
        var v1 = data.sort(function(prev,next){
            //  return  表达式
            return  next.price - prev.price;
        })
        console.log(v1);




    </script>
</body>
</html>